perm filename LS[GEM,BGB] blob
sn#030935 filedate 1973-03-27 generic text, type T, neo UTF8
00100 TITLE LS - LOCUS SOLVERS - BGB - MARCH 1973.
00200
00300 ;CRE NODE FORMATS.
00400 ;----------------------------------------------------------------;
00500 ; ;
00600 ; VERTEX/ARC NODE. POLYGON/REGION NODE. ;
00700 ; ;
00800 ; 0 CW,,CCW 0 polygon-ring. ;
00900 ; 1 ROW,,COL 1 DAD,,SON ;
01000 ; 2 TYPE,,RELOC 2 TYPE,,RELOC ;
01100 ; 3 ENDO,,EXO 3 ENDO,,EXO ;
01200 ; 4 ARC,,PED 4 ARC,,NCNT ;
01300 ; 5 CNTRST,,PGON 5 CIS,,PGON ;
01400 ; 6 NTIME,,PTIME 6 NTIME,,PTIME ;
01500 ; ;
01600 ;----------------------------------------------------------------;
01700 ; WINGED EDGE NODE. FACE NODE. ;
01800 ; ;
01900 ; 0 NCW ,,PCW 0 - ,, - ;
02000 ; 1 NCCW,,PCCW 1 DAD,, - ;
02100 ; 2 TYPE,,lngth/cntrst 2 TYPE,,RELOC ;
02200 ; 3 NFACE,,PFACE 3 NFACE,,PFACE ;
02300 ; 4 NED,,PED 4 - ,,PED ;
02400 ; 5 NVT,,PVT 5 - ,, - ;
02500 ; 6 NTIME,,PTIME 6 NTIME,,PTIME ;
02600 ; ;
02700 ;----------------------------------------------------------------;
02800 ; IMAGE NODE. LEVEL NODE. ;
02900 ; ;
03000 ; 0 image-ring. 0 level-ring. ;
03100 ; 1 - ,,SON 1 - ,,SON ;
03200 ; 2 TYPE,,RELOC 2 TYPE,,RELOC ;
03300 ; 3 NFACE,,PFACE 3 - ,, - ;
03400 ; 4 NED,,PED 4 - ,,NCNT ;
03500 ; 5 - ,, - 5 - ,, - ;
03600 ; 6 NTIME,,PTIME 6 NTIME,,PTIME ;
03700 ; ;
03800 ;----------------------------------------------------------------;
03900 ; FILM NODE. EMPTY NODE. ;
04000 ; ;
04100 ; 0 coresize 0 - ,,avail ;
04200 ; 1 - ,,SON 1 - ,, - ;
04300 ; 2 TYPE,,RELOC 2 TYPE,,RELOC ;
04400 ; 3 - ,,avail 3 - ,, - ;
04500 ; 4 blk count 4 - ,, - ;
04600 ; 5 - ,, - 5 - ,, - ;
04700 ; 6 NTIME,,PTIME 6 NTIME,,PTIME ;
04800 ; ;
04900 ;----------------------------------------------------------------;
00100 ;DEFINE CRE LINK NAMES.
00200
00300 %←←1B18
00400 DEFINE LEFT $(NAM,WRD){
00500 DEFINE NAM(A,Q)<CAR A,%+WRD(Q)>
00600 DEFINE NAM$.(A,Q)<DIP A,%+WRD(Q)>}
00700
00800 DEFINE RIGHT $(NAM,WRD){
00900 DEFINE NAM(A,Q)<CDR A,%+WRD(Q)>
01000 DEFINE NAM$.(A,Q)<DAP A,%+WRD(Q)>}
01100
01200 LEFT(%DAD,1)↔RIGHT(%SON,1)
01300 LEFT(%TYP,2)↔RIGHT(%ALT,2)
01400 LEFT(%ROW,1)↔RIGHT(%COL,1)
01500 LEFT(%CW, 0)↔RIGHT(%CCW,0)
01600 LEFT(%NCW,0)↔RIGHT(%PCW,0)
01700 LEFT(%NCCW,1)↔RIGHT(%PCCW,1)
01800 LEFT(%NFAC,3)↔RIGHT(%PFAC,3)
01900 LEFT(%NED,4)↔RIGHT(%PED,4)
02000 LEFT(%NVT,5)↔RIGHT(%PVT,5)
02100 LEFT(%NTIM,6)↔RIGHT(%PTIM,6)
02200 LEFT(%ENDO,3)↔RIGHT(%EXO,3)
02300 LEFT(%NGON,5)↔RIGHT(%PGON,5)
02350 LEFT(%ARC,4)
02400
02500 ;-----------------------------------------------------------------
00100 SUBR(MKIMGS)------------------------------------------------------
00200 BEGIN MKIMGS; MAKE GEOMED IMAGES FROM CRE IMAGES.
00300 EXTERN MKNODE,BATT,MKB,MKF,MKV,MKEV,MKFE,UNIVERSE
00400 ACCUMULATORS{A,B,C}
00500
00600 SKIPN A,%+1↔POP0J
00700 DAC A,%IMG↔DAC A,%IMG0 ;FIRST CRE IMAGE OF FILM.
00800
00900 ;MAKE A GEOMED IMAGE.
01000 L4: SETQ(IMG,{MKNODE,[PBIT+$IMAGE]})
01100 CW. 1,1↔CCW. 1,1 ;EMPTY BODY RING.
01200 CALL(BATT,IMG,UNIVERSE) ;PLACE IMAGE IN UNIVERSE.
01300
01400 LAC A,%IMG↔%SON A,A
01500 DAC A,%LEV↔DAC A,%LEV0 ;FIRST LEVEL OF IMAGE.
01600
01700 L3: LAC A,%LEV↔%SON A,A
01800 DAC A,%PGN↔DAC A,%PGN0 ;FIRST POLYGON OF LEVEL.
01900
02000 L2: LAC A,%PGN↔%ARC A,A
02100 DAC A,%V↔DAC A,%V0 ;FIRST VERTEX OF POLYGON.
02200
02300 SETQ(BDY,{MKB,IMG})
02400 SETQ(FACE,{MKF,BDY})
02500 SETQ(V0,{MKV,BDY})↔DAC 1,V
02600
02700 L1: LAC 2,%V
02800 %ROW 0,2↔FLO↔FSB[108.0]↔DACN YPP(1)
02900 %COL 0,2↔FLO↔FSB[144.0]↔DAC XPP(1)
03000
03100 %CCW 2,2↔DAC 2,%V ;NEXT VECTOR.
03200 CAME 2,%V0↔GO[
03300 SETQ(V,{MKEV,FACE,V})↔GO L1]
03400 CALL(MKFE,V,FACE,V0)
03500
03600 LAC 1,%PGN↔%CCW 1,1↔DAC 1,%PGN ;NEXT POLYGON.
03700 CAME 1,%PGN0↔GO L2
03800 LAC 1,%LEV↔%CCW 1,1↔DAC 1,%LEV ;NEXT LEVEL.
03900 CAME 1,%LEV0↔GO L3
04000 LAC 1,%IMG↔%CCW 1,1↔DAC 1,%IMG ;NEXT IMAGE.
04100 CAME 1,%IMG0↔GO L4↔POP0J
04200
04300 DECLARE{BDY,FACE,V,V0,%V,%V0,%PGN,%PGN0,%LEV,%LEV0,IMG,%IMG,%IMG0}
04400 BEND MKIMGS; BGB 14 MARCH 1973 -----------------------------------
04500 END